home *** CD-ROM | disk | FTP | other *** search
/ Gigarom 1 / Gigarom Macintosh Archives (Quantum Leap)(CDRM1080320)(1993).iso / FILES / DEV / I-Z / Lex.cpt / Lex / LEXLIB.π folder / LMOVB.C < prev    next >
Text File  |  1990-06-09  |  1KB  |  49 lines

  1. /*
  2.   HEADER: CUG    nnn.nn;
  3.   TITLE:    LEX - A Lexical Analyser Generator
  4.   VERSION:       1.0 for IBM-PC
  5.   DATE:    Jan 30, 1985
  6.   DESCRIPTION:   A Lexical Analyser Generator. From UNIX
  7.   KEYWORDS:      Lexical Analyser Generator YACC C PREP
  8.   SYSTEM:    IBM-PC and Compatiables
  9.   FILENAME:      LMOVB.C
  10.   WARNINGS:      This program is not for the casual user. It will
  11.     be useful primarily to expert developers.
  12.   CRC:    N/A
  13.   SEE-ALSO:      YACC and PREP
  14.   AUTHORS:       Scott Guthery 11100 leafwood lane Austin, TX 78750
  15.   COMPILERS:     DESMET-C
  16.   REFERENCES:    UNIX Systems Manuals
  17. */
  18. /*
  19.  * Bob Denny     28-Aug-82  Remove reference to stdio.h
  20.  * Scott Guthery 20-Nov-83  Adapt for IBM PC & DeSmet C
  21.  */
  22.  
  23. #include "lex.h"
  24.  
  25. SHORTINT
  26. _lmovb(ltab_ptr, the_char, state)
  27. register struct lextab *ltab_ptr;
  28. register SHORTINT the_char, state;
  29. {
  30.     SHORTINT base;
  31.  
  32.     while (    (base = ltab_ptr->llbase[state]+the_char) > ltab_ptr->llnxtmax ||
  33.             (ltab_ptr->llcheck[base] & 0377) != state) {
  34.     
  35.         if (state != ltab_ptr->llendst)
  36.             {
  37.             /*
  38.              * This miscompiled on Decus C many years ago:
  39.              *    state = ltab_ptr->lldefault[state] & 0377;
  40.              */
  41.             base = ltab_ptr->lldefault[state] & 0377;
  42.             state = base;
  43.             }
  44.         else
  45.             return(-1);
  46.         }
  47.     return(ltab_ptr->llnext[base] & 0377);
  48.     }
  49.